﻿namespace Calendar
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //设置常量，一个月的宽度为40个字节，高度为9个字节,天数宽度为4个字节
            const int monthWidth = 40;
            const int monthHeight = 9;
            const int dayWidth = 4;
            //设置初始坐标（0，0），x表示横坐标，y表示纵坐标
            int x = 0, y = 0;
            int theDate = 0;
            int theDayOfMonth = 0;
            //用for循环实现在2022年内天数逐渐增加
            //（.Year)表示取atDay的年份，（.AddDays(1))表示天数加一
            for (DateTime atDay = new DateTime(2022, 1, 1); atDay.Year == 2022; atDay = atDay.AddDays(1))
            {
                //if循环实现每月1号所在位置
                if (atDay.Day == 1)
                {
                    //x,y表示天数所在位置
                    x = ((atDay.Month - 1) % 3) * monthWidth;
                    y = ((atDay.Month - 1) / 3) * monthHeight;
                    Console.SetCursorPosition(x, y);
                    //打印输出“1-12月”所在位置
                    //(atDay.Month)表示取atDay的月份
                    Console.Write("            {0}月", atDay.Month);
                    //在（x,y+1)位置处输出星期日-星期六
                    Console.SetCursorPosition(x, y + 1);
                    Console.Write("日  一  二  三  四  五  六");
                    theDayOfMonth = Convert.ToInt32(atDay.DayOfWeek);
                }
                theDate = Convert.ToInt32(atDay.DayOfWeek);
                //打印输出天数所在位置
                Console.SetCursorPosition(x + theDate * dayWidth, (y + 1) + ((theDayOfMonth + atDay.Day - 1) / 7 + 1));
                Console.Write(atDay.Day);

            }

        }
    }
}